//package net.happy2v.louis.re.databases;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.UUID;
//
//import net.ib.mn.R;
//import net.ib.mn.constant.MTalkConstant;
//import net.ib.mn.database.DatabaseContract.MessageTable;
//import net.ib.mn.database.DatabaseContract.MessageTable.MessageStatus;
//import net.ib.mn.global.GlobalPreferences;
//import net.ib.mn.ui.chat.ChatActivity;
//import net.ib.mn.util.GpbSupport;
//import net.ib.mn.util.MTalkLogWriter;
//import net.ib.mn.util.TimeAdapter;
//import net.ib.mntalk.protocol.Common;
//import net.ib.mntalk.protocol.Common.Message;
//import net.ib.mntalk.protocol.Common.ReadMark;
//import net.ib.mntalk.protocol.Common.UUIDMsg;
//import net.ib.mntalk.protocol.Common.UserMessage;
//import net.ib.mntalk.protocol.Session.SendMessageReq;
//import net.ib.mntalk.protocol.Session.SendMessageRes;
//import net.ib.mntalk.protocol.client.Database.FileTransferInfo;
//import android.content.ContentResolver;
//import android.content.ContentValues;
//import android.content.Context;
//import android.database.Cursor;
//import android.util.Log;
//
//import com.google.protobuf.micro.InvalidProtocolBufferMicroException;
//
///**
// * Chat Database CRUD(Create, Read, Update, Delete) + @
// * 
// * @author happy2v
// * 
// */
//public class ChatDatabaseHelper {
//
//	/**
//	 * 분기 처리
//	 */
//
//	/**
//	 * 메시지가 있는지 확인. insert 할 것인지 확인한다.
//	 */
//	public static void syncGetMessages(Context context, Common.Message message) {
//		if (!existCheckMessage(context, message.getMsgUuid())) {
//			insertMessage(context, message, null);
//		} else {
//			updateMessage(context, message);
//		}
//	}
//
//	/**
//	 * 생성 Create(Insert) - Send 메시지 삽입 - Message 삽입 - Client 메시지 삽입
//	 */
//
//	/**
//	 * 클라이언트에서 메시지를 보낼때 메시지 생성 ( 유저 메시지 / 보내는중 / 보낸 메시지로 설정 )
//	 * 
//	 * @param context
//	 * @param clientViewUuid
//	 * @param sendMessageReq
//	 * @param clientMsgUuid
//	 */
//	public static void insertSendMessage(Context context, UUID clientViewUuid,
//			SendMessageReq sendMessageReq, UUID clientMsgUuid) {
//		insertSendMessage(context, clientViewUuid.getMostSignificantBits(),
//				clientViewUuid.getLeastSignificantBits(), sendMessageReq,
//				clientMsgUuid);
//	}
//
//	/**
//	 * 클라이언트에서 메시지를 보낼때 메시지 생성 ( 유저 메시지 / 보내는중 / 보낸 메시지로 설정 )
//	 * 
//	 * @param context
//	 * @param clientViewUuid
//	 * @param sendMessageReq
//	 * @param clientMsgUuid
//	 */
//	public static void insertSendMessage(Context context,
//			long clientViewUuidMsb, long clientViewUuidLsb,
//			SendMessageReq sendMessageReq, UUID clientMsgUuid) {
//		if (clientMsgUuid == null) {
//			clientMsgUuid = UUID.randomUUID();
//		}
//		long viewUuidMsb;
//		long viewUuidLsb;
//		if (sendMessageReq != null) {
//			viewUuidMsb = GpbSupport.msbOf(sendMessageReq.getViewUuid());
//			viewUuidLsb = GpbSupport.lsbOf(sendMessageReq.getViewUuid());
//		} else {
//			UUIDMsg viewUuid = ViewDatabaseHelper.getViewUUID(context,
//					clientViewUuidMsb, clientViewUuidLsb);
//			viewUuidMsb = GpbSupport.msbOf(viewUuid);
//			viewUuidLsb = GpbSupport.lsbOf(viewUuid);
//		}
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_CLIENT_VIEW_UUID_MSB, clientViewUuidMsb);
//		cv.put(MessageTable.KEY_CLIENT_VIEW_UUID_LSB, clientViewUuidLsb);
//		cv.put(MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB,
//				clientMsgUuid.getMostSignificantBits());
//		cv.put(MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB,
//				clientMsgUuid.getLeastSignificantBits());
//		cv.put(MessageTable.KEY_VIEW_UUID_MSB, viewUuidMsb);
//		cv.put(MessageTable.KEY_VIEW_UUID_LSB, viewUuidLsb);
//		cv.put(MessageTable.KEY_MESSAGE_TIME, System.currentTimeMillis());
//		cv.put(MessageTable.KEY_MESSAGE_OBJECT_TYPE,
//				MessageTable.MessageObjectType.USER.getCode());
//		cv.put(MessageTable.KEY_MESSAGE_STATUS,
//				MessageTable.MessageStatus.SENDING.ordinal());
//		cv.put(MessageTable.KEY_MY_MESSAGE,
//				MessageTable.MyMessage.YES.ordinal());
//		if (sendMessageReq != null)
//			cv.put(MessageTable.KEY_MESSAGE, sendMessageReq.getMessage()
//					.toByteArray());
//		ContentResolver cr = context.getContentResolver();
//		cr.insert(MessageTable.CONTENT_URI, cv);
//	}
//
//	/**
//	 * Message를 넣어준다.
//	 * 
//	 * @param context
//	 * @param message
//	 * @param clientMsgUuid
//	 */
//	public static void insertMessage(Context context, Message message,
//			UUID clientMsgUuid) {
//		UUID clientViewUuid = ViewDatabaseHelper.getClientUUID(context,
//				message.getViewUuid());
//		if (clientMsgUuid == null) {
//			clientMsgUuid = UUID.randomUUID();
//		}
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_CLIENT_VIEW_UUID_MSB,
//				clientViewUuid.getMostSignificantBits());
//		cv.put(MessageTable.KEY_CLIENT_VIEW_UUID_LSB,
//				clientViewUuid.getLeastSignificantBits());
//		cv.put(MessageTable.KEY_VIEW_UUID_MSB,
//				GpbSupport.msbOf(message.getViewUuid()));
//		cv.put(MessageTable.KEY_VIEW_UUID_LSB,
//				GpbSupport.lsbOf(message.getViewUuid()));
//		cv.put(MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB,
//				clientMsgUuid.getMostSignificantBits());
//		cv.put(MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB,
//				clientMsgUuid.getLeastSignificantBits());
//		cv.put(MessageTable.KEY_MESSAGE_UUID_MSB,
//				GpbSupport.msbOf(message.getMsgUuid()));
//		cv.put(MessageTable.KEY_MESSAGE_UUID_LSB,
//				GpbSupport.lsbOf(message.getMsgUuid()));
//		cv.put(MessageTable.KEY_MESSAGE_NOTI_UUID_MSB,
//				GpbSupport.msbOf(message.getNotiUuid()));
//		cv.put(MessageTable.KEY_MESSAGE_NOTI_UUID_LSB,
//				GpbSupport.lsbOf(message.getNotiUuid()));
//		cv.put(MessageTable.KEY_MESSAGE_OBJECT_TYPE, message.getType());
//		// TIME-STAMP
//		cv.put(MessageTable.KEY_MESSAGE_TIME,
//				TimeAdapter.getMillisecondFromUUIDMsg(message.getMsgUuid()));
//
//		/** 메시지별 설정 */
//		switch (message.getType()) {
//		case Common.MSG_TYPE_USER_MSG:
//			UserMessage um = message.getUserMassage();
//			cv.put(MessageTable.KEY_MESSAGE, um.toByteArray());
//			if (um.hasSenderUuid()) {
//				if ((GpbSupport.msbOf(um.getSenderUuid()) == GlobalPreferences
//						.getUserUUIDMsb())
//						&& (GpbSupport.lsbOf(um.getSenderUuid()) == GlobalPreferences
//								.getUserUUIDLsb())) {
//					cv.put(MessageTable.KEY_MESSAGE_STATUS,
//							MessageTable.MessageStatus.SERVER_RECEIVE.ordinal());
//					cv.put(MessageTable.KEY_MY_MESSAGE,
//							MessageTable.MyMessage.YES.ordinal());
//				} else {
//					cv.put(MessageTable.KEY_MESSAGE_STATUS,
//							MessageTable.MessageStatus.CLIENT_RECEIVE.ordinal());
//					cv.put(MessageTable.KEY_MY_MESSAGE,
//							MessageTable.MyMessage.NO.ordinal());
//				}
//			} else {
//				cv.put(MessageTable.KEY_MESSAGE_STATUS,
//						MessageTable.MessageStatus.CLIENT_RECEIVE.ordinal());
//				cv.put(MessageTable.KEY_MY_MESSAGE,
//						MessageTable.MyMessage.NO.ordinal());
//			}
//			break;
//		case Common.MSG_TYPE_SYSTEM_MSG:
//			if (message.hasSystemMessage()) {
//				ViewDatabaseHelper.updateMemberListBySysMsg(context,
//						message.getSystemMessage(), message.getViewUuid());
//			}
//			cv.put(MessageTable.KEY_MESSAGE, message.getSystemMessage()
//					.toByteArray());
//			cv.put(MessageTable.KEY_MESSAGE_STATUS,
//					MessageTable.MessageStatus.CLIENT_RECEIVE.ordinal());
//			cv.put(MessageTable.KEY_MY_MESSAGE,
//					MessageTable.MyMessage.NO.ordinal());
//			break;
//		case Common.MSG_TYPE_CONTROL_MSG:
//			cv.put(MessageTable.KEY_MESSAGE, message.getControlMessage()
//					.toByteArray());
//			cv.put(MessageTable.KEY_MESSAGE_STATUS,
//					MessageTable.MessageStatus.CLIENT_RECEIVE.ordinal());
//			cv.put(MessageTable.KEY_MY_MESSAGE,
//					MessageTable.MyMessage.NO.ordinal());
//			break;
//		default:
//			break;
//		}
//
//		ContentResolver cr = context.getContentResolver();
//		cr.insert(MessageTable.CONTENT_URI, cv);
//	}
//
//	/**
//	 * client Message 를 넣어준다.
//	 * 
//	 * @param context
//	 * @param clientViewUuid
//	 * @param message
//	 */
//	public static void insertClientMessage(Context context,
//			UUID clientViewUuid, String message) {
//		insertClientMessage(context, clientViewUuid.getMostSignificantBits(),
//				clientViewUuid.getLeastSignificantBits(), message);
//	}
//
//	/**
//	 * client Message 를 넣어준다.
//	 * 
//	 * @param context
//	 * @param clientViewUuid
//	 * @param message
//	 */
//	public static void insertClientMessage(Context context,
//			long clientViewUuidMsb, long clientViewUuidLsb, String message) {
//		ContentValues cv = new ContentValues();
//		UUID clientMsgUuid = UUID.randomUUID();
//		cv.put(MessageTable.KEY_CLIENT_VIEW_UUID_MSB, clientViewUuidMsb);
//		cv.put(MessageTable.KEY_CLIENT_VIEW_UUID_LSB, clientViewUuidLsb);
//		cv.put(MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB,
//				clientMsgUuid.getMostSignificantBits());
//		cv.put(MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB,
//				clientMsgUuid.getLeastSignificantBits());
//		cv.put(MessageTable.KEY_MESSAGE_OBJECT_TYPE,
//				MessageTable.MessageObjectType.CLIENT.getCode());
//		cv.put(MessageTable.KEY_MESSAGE_TIME, System.currentTimeMillis());
//		cv.put(MessageTable.KEY_CLIENT_MESSAGE, message);
//		ContentResolver cr = context.getContentResolver();
//		cr.insert(MessageTable.CONTENT_URI, cv);
//	}
//
//	/**
//	 * 읽기 Read(Select)
//	 */
//
//	/**
//	 * messageUuid로 ClientMessageUUID 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ClientMessageUUID 을 반환한다.
//	 */
//	public static UUID getClientMessageUUID(Context context, UUIDMsg messageUuid) {
//		return getClientMessageUUID(context, GpbSupport.msbOf(messageUuid),
//				GpbSupport.lsbOf(messageUuid));
//	}
//
//	/**
//	 * messageUuid로 ClientMessageUUID 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ClientMessageUUID 을 반환한다.
//	 */
//	public static UUID getClientMessageUUID(Context context,
//			long messageUuidMsb, long messageUuidLsb) {
//		String[] projection = new String[] {
//				MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB,
//				MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] { String.valueOf(messageUuidMsb),
//				String.valueOf(messageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		UUID clientMessageUuid = null;
//		if (messageCursor.moveToFirst()) {
//			long clientMessageUuidMsb = messageCursor
//					.getLong(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB));
//			long clientMessageUuidLsb = messageCursor
//					.getLong(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB));
//			clientMessageUuid = GpbSupport.makeUuid(clientMessageUuidMsb,
//					clientMessageUuidLsb);
//		}
//		messageCursor.close();
//		return clientMessageUuid;
//	}
//
//	// /**
//	// * messageUuid로 MessageUUID 을 찾는다.
//	// * @param context
//	// * @param messageUuid
//	// * @return MessageUUID 을 반환한다.
//	// */
//	// public static UUIDMsg getMessageUUID(Context context, UUID
//	// clientMessageUuid){
//	// return getMessageUUID(context,
//	// clientMessageUuid.getMostSignificantBits(),
//	// clientMessageUuid.getLeastSignificantBits());
//	// }
//	//
//	// /**
//	// * messageUuid로 MessageUUID 을 찾는다.
//	// * @param context
//	// * @param messageUuid
//	// * @return MessageUUID 을 반환한다.
//	// */
//	// public static UUIDMsg getMessageUUID(Context context, long
//	// clientMessageUuidMsb, long clientMessageUuidLsb){
//	// String[] projection = new String[]{ MessageTable.KEY_MESSAGE_UUID_MSB,
//	// MessageTable.KEY_MESSAGE_UUID_LSB };
//	// String select =
//	// MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//	// + " AND "
//	// + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//	// String[] selectionArgs = new String[]{
//	// String.valueOf(clientMessageUuidMsb),
//	// String.valueOf(clientMessageUuidLsb)};
//	// ContentResolver cr = context.getContentResolver();
//	// Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//	// select, selectionArgs, null);
//	//
//	// UUIDMsg viewUuid = null;
//	// if(messageCursor.moveToFirst()){
//	// long viewUuidMsb =
//	// messageCursor.getLong(messageCursor.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_UUID_MSB));
//	// long viewUuidLsb =
//	// messageCursor.getLong(messageCursor.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_UUID_LSB));
//	// viewUuid = GpbSupport.makeUuidMsg(viewUuidMsb, viewUuidLsb);
//	// }
//	// messageCursor.close();
//	// return viewUuid;
//	// }
//	//
//	// /**
//	// * messageUuid로 ClientViewUUID 을 찾는다.
//	// * @param context
//	// * @param messageUuid
//	// * @return ClientViewUUID 을 반환한다.
//	// */
//	// public static UUID getClientViewUUID(Context context, UUIDMsg
//	// messageUuid){
//	// String[] projection = new String[]{
//	// MessageTable.KEY_CLIENT_VIEW_UUID_MSB,
//	// MessageTable.KEY_CLIENT_VIEW_UUID_LSB };
//	// String select =
//	// MessageTable.KEY_MESSAGE_UUID_MSB + "=?"
//	// + " AND "
//	// + MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//	// String[] selectionArgs = new String[]{
//	// String.valueOf(GpbSupport.msbOf(messageUuid)),
//	// String.valueOf(GpbSupport.lsbOf(messageUuid))};
//	// ContentResolver cr = context.getContentResolver();
//	// Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//	// select, selectionArgs, null);
//	//
//	// UUID clientViewUuid = null;
//	// if(messageCursor.moveToFirst()){
//	// long clientViewUuidMsb =
//	// messageCursor.getLong(messageCursor.getColumnIndexOrThrow(MessageTable.KEY_CLIENT_VIEW_UUID_MSB));
//	// long clientViewUuidLsb =
//	// messageCursor.getLong(messageCursor.getColumnIndexOrThrow(MessageTable.KEY_CLIENT_VIEW_UUID_LSB));
//	// clientViewUuid = GpbSupport.makeUuid(clientViewUuidMsb,
//	// clientViewUuidLsb);
//	// }
//	// messageCursor.close();
//	// return clientViewUuid;
//	// }
//	//
//	// /**
//	// * messageUuid로 ClientViewUUID 을 찾는다.
//	// * @param context
//	// * @param messageUuid
//	// * @return ClientViewUUID 을 반환한다.
//	// */
//	// public static UUID getClientViewUUID(Context context, UUID
//	// clientMessageUuid){
//	// return getClientViewUUID(context,
//	// clientMessageUuid.getMostSignificantBits(),
//	// clientMessageUuid.getLeastSignificantBits());
//	// }
//	//
//	// /**
//	// * messageUuid로 ClientViewUUID 을 찾는다.
//	// * @param context
//	// * @param messageUuid
//	// * @return ClientViewUUID 을 반환한다.
//	// */
//	// public static UUID getClientViewUUID(Context context, long
//	// clientMessageUuidMsb, long clientMessageUuidLsb){
//	// String[] projection = new String[]{
//	// MessageTable.KEY_CLIENT_VIEW_UUID_MSB,
//	// MessageTable.KEY_CLIENT_VIEW_UUID_LSB };
//	// String select =
//	// MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//	// + " AND "
//	// + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//	// String[] selectionArgs = new String[]{
//	// String.valueOf(clientMessageUuidMsb),
//	// String.valueOf(clientMessageUuidLsb)};
//	// ContentResolver cr = context.getContentResolver();
//	// Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//	// select, selectionArgs, null);
//	//
//	// UUID clientViewUuid = null;
//	// if(messageCursor.moveToFirst()){
//	// long clientViewUuidMsb =
//	// messageCursor.getLong(messageCursor.getColumnIndexOrThrow(MessageTable.KEY_CLIENT_VIEW_UUID_MSB));
//	// long clientViewUuidLsb =
//	// messageCursor.getLong(messageCursor.getColumnIndexOrThrow(MessageTable.KEY_CLIENT_VIEW_UUID_LSB));
//	// clientViewUuid = GpbSupport.makeUuid(clientViewUuidMsb,
//	// clientViewUuidLsb);
//	// }
//	// messageCursor.close();
//	// return clientViewUuid;
//	// }
//
//	/**
//	 * messageUuid로 ViewUUID 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ViewUUID 을 반환한다.
//	 */
//	public static UUIDMsg getViewUUID(Context context, UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_VIEW_UUID_MSB,
//				MessageTable.KEY_VIEW_UUID_LSB };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		UUIDMsg viewUuid = null;
//		if (messageCursor.moveToFirst()) {
//			long viewUuidMsb = messageCursor.getLong(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_VIEW_UUID_MSB));
//			long viewUuidLsb = messageCursor.getLong(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_VIEW_UUID_LSB));
//			viewUuid = GpbSupport.makeUuidMsg(viewUuidMsb, viewUuidLsb);
//		}
//		messageCursor.close();
//		return viewUuid;
//	}
//
//	/**
//	 * messageUuid로 ViewUUID 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ViewUUID 을 반환한다.
//	 */
//	public static UUIDMsg getViewUUID(Context context, UUID clientMessageUuid) {
//		return getViewUUID(context, clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 ViewUUID 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ViewUUID 을 반환한다.
//	 */
//	public static UUIDMsg getViewUUID(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_VIEW_UUID_MSB,
//				MessageTable.KEY_VIEW_UUID_LSB };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		UUIDMsg viewUuid = null;
//		if (messageCursor.moveToFirst()) {
//			long viewUuidMsb = messageCursor.getLong(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_VIEW_UUID_MSB));
//			long viewUuidLsb = messageCursor.getLong(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_VIEW_UUID_LSB));
//			viewUuid = GpbSupport.makeUuidMsg(viewUuidMsb, viewUuidLsb);
//		}
//		messageCursor.close();
//		return viewUuid;
//	}
//
//	/**
//	 * messageUuid로 MessageNotiUUID 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageNotiUUID 을 반환한다.
//	 */
//	public static UUIDMsg getMessageNotiUUID(Context context,
//			UUIDMsg messageUuid) {
//		String[] projection = new String[] {
//				MessageTable.KEY_MESSAGE_NOTI_UUID_MSB,
//				MessageTable.KEY_MESSAGE_NOTI_UUID_LSB };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		UUIDMsg messageNotiUuid = null;
//		if (messageCursor.moveToFirst()) {
//			long messageNotiUuidMsb = messageCursor
//					.getLong(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_NOTI_UUID_MSB));
//			long messageNotiUuidLsb = messageCursor
//					.getLong(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_NOTI_UUID_LSB));
//			messageNotiUuid = GpbSupport.makeUuidMsg(messageNotiUuidMsb,
//					messageNotiUuidLsb);
//		}
//		messageCursor.close();
//		return messageNotiUuid;
//	}
//
//	/**
//	 * messageUuid로 MessageNotiUUID 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageNotiUUID 을 반환한다.
//	 */
//	public static UUIDMsg getMessageNotiUUID(Context context,
//			UUID clientMessageUuid) {
//		return getMessageNotiUUID(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 MessageNotiUUID 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageNotiUUID 을 반환한다.
//	 */
//	public static UUIDMsg getMessageNotiUUID(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] {
//				MessageTable.KEY_MESSAGE_NOTI_UUID_MSB,
//				MessageTable.KEY_MESSAGE_NOTI_UUID_LSB };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		UUIDMsg messageNotiUuid = null;
//		if (messageCursor.moveToFirst()) {
//			long messageNotiUuidMsb = messageCursor
//					.getLong(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_NOTI_UUID_MSB));
//			long messageNotiUuidLsb = messageCursor
//					.getLong(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_NOTI_UUID_LSB));
//			messageNotiUuid = GpbSupport.makeUuidMsg(messageNotiUuidMsb,
//					messageNotiUuidLsb);
//		}
//		messageCursor.close();
//		return messageNotiUuid;
//	}
//
//	/**
//	 * messageUuid로 MessageTime 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageTime 을 반환한다.
//	 */
//	public static long getMessageTime(Context context, UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE_TIME };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		long messageTime = -1;
//		if (messageCursor.moveToFirst()) {
//			messageTime = messageCursor.getLong(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_TIME));
//		}
//		messageCursor.close();
//		return messageTime;
//	}
//
//	/**
//	 * messageUuid로 MessageTime 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageTime 을 반환한다.
//	 */
//	public static long getMessageTime(Context context, UUID clientMessageUuid) {
//		return getMessageTime(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 MessageTime 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageTime 을 반환한다.
//	 */
//	public static long getMessageTime(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE_TIME };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		long messageTime = -1;
//		if (messageCursor.moveToFirst()) {
//			messageTime = messageCursor.getLong(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_TIME));
//		}
//		messageCursor.close();
//		return messageTime;
//	}
//
//	/**
//	 * messageUuid로 MessageStatus 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageStatus 을 반환한다.
//	 */
//	public static int getMessageStatus(Context context, UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE_STATUS };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		int messageStatus = -1;
//		if (messageCursor.moveToFirst()) {
//			messageStatus = messageCursor.getInt(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_STATUS));
//		}
//		messageCursor.close();
//		return messageStatus;
//	}
//
//	/**
//	 * messageUuid로 MessageStatus 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageStatus 을 반환한다.
//	 */
//	public static int getMessageStatus(Context context, UUID clientMessageUuid) {
//		return getMessageStatus(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 MessageStatus 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageStatus 을 반환한다.
//	 */
//	public static int getMessageStatus(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE_STATUS };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		int messageStatus = -1;
//		if (messageCursor.moveToFirst()) {
//			messageStatus = messageCursor.getInt(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_STATUS));
//		}
//		messageCursor.close();
//		return messageStatus;
//	}
//
//	/**
//	 * messageUuid로 MessageType 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageType 을 반환한다.
//	 */
//	public static int getMessageType(Context context, UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE_OBJECT_TYPE };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		int messageType = -1;
//		if (messageCursor.moveToFirst()) {
//			messageType = messageCursor
//					.getInt(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_OBJECT_TYPE));
//		}
//		messageCursor.close();
//		return messageType;
//	}
//
//	/**
//	 * messageUuid로 MessageType 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageType 을 반환한다.
//	 */
//	public static int getMessageType(Context context, UUID clientMessageUuid) {
//		return getMessageType(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 MessageType 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MessageType 을 반환한다.
//	 */
//	public static int getMessageType(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE_OBJECT_TYPE };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		int messageType = -1;
//		if (messageCursor.moveToFirst()) {
//			messageType = messageCursor
//					.getInt(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_OBJECT_TYPE));
//		}
//		messageCursor.close();
//		return messageType;
//	}
//
//	/**
//	 * messageUuid로 UserMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return UserMessage 을 반환한다.
//	 */
//	public static Common.UserMessage getUserMessage(Context context,
//			UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		UserMessage userMessage = null;
//		if (messageCursor.moveToFirst()) {
//			try {
//				byte[] data = messageCursor.getBlob(messageCursor
//						.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE));
//				if (data != null) {
//					userMessage = Common.UserMessage.parseFrom(data);
//				}
//			} catch (InvalidProtocolBufferMicroException e) {
//				MTalkLogWriter.e(e);
//			} catch (IllegalArgumentException e) {
//				MTalkLogWriter.e(e);
//			}
//		}
//		messageCursor.close();
//		return userMessage;
//	}
//
//	/**
//	 * messageUuid로 UserMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return UserMessage 을 반환한다.
//	 */
//	public static Common.UserMessage getUserMessage(Context context,
//			UUID clientMessageUuid) {
//		return getUserMessage(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 UserMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return UserMessage 을 반환한다.
//	 */
//	public static Common.UserMessage getUserMessage(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		UserMessage userMessage = null;
//		if (messageCursor.moveToFirst()) {
//			try {
//				byte[] data = messageCursor.getBlob(messageCursor
//						.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE));
//				if (data != null) {
//					userMessage = Common.UserMessage.parseFrom(data);
//				}
//			} catch (InvalidProtocolBufferMicroException e) {
//				MTalkLogWriter.e(e);
//			} catch (IllegalArgumentException e) {
//				MTalkLogWriter.e(e);
//			}
//		}
//		messageCursor.close();
//		return userMessage;
//	}
//
//	/**
//	 * messageUuid로 MyMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MyMessage 을 반환한다.
//	 */
//	public static int getMyMessage(Context context, UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_MY_MESSAGE };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		int myMessage = -1;
//		if (messageCursor.moveToFirst()) {
//			myMessage = messageCursor.getInt(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_MY_MESSAGE));
//		}
//		messageCursor.close();
//		return myMessage;
//	}
//
//	/**
//	 * messageUuid로 MyMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return MyMessage 을 반환한다.
//	 */
//	public static int getMyMessage(Context context, UUID clientMessageUuid) {
//		return getMyMessage(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 getMyMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return getMyMessage 을 반환한다.
//	 */
//	public static int getMyMessage(Context context, long clientMessageUuidMsb,
//			long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_MY_MESSAGE };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		int myMessage = -1;
//		if (messageCursor.moveToFirst()) {
//			myMessage = messageCursor.getInt(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_MY_MESSAGE));
//		}
//		messageCursor.close();
//		return myMessage;
//	}
//
//	/**
//	 * messageUuid로 FileTransferInfo 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return FileTransferInfo 을 반환한다.
//	 */
//	public static FileTransferInfo getFileTransferInfo(Context context,
//			UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_FILE_TRANSFER_INFO };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		FileTransferInfo fileTransferInfo = null;
//		if (messageCursor.moveToFirst()) {
//			try {
//				byte[] data = messageCursor
//						.getBlob(messageCursor
//								.getColumnIndexOrThrow(MessageTable.KEY_FILE_TRANSFER_INFO));
//				if (data != null) {
//					fileTransferInfo = FileTransferInfo.parseFrom(data);
//				}
//			} catch (InvalidProtocolBufferMicroException e) {
//				MTalkLogWriter.e(e);
//			} catch (IllegalArgumentException e) {
//				MTalkLogWriter.e(e);
//			}
//		}
//		messageCursor.close();
//		return fileTransferInfo;
//	}
//
//	/**
//	 * messageUuid로 FileTransferInfo 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return FileTransferInfo 을 반환한다.
//	 */
//	public static FileTransferInfo getFileTransferInfo(Context context,
//			UUID clientMessageUuid) {
//		return getFileTransferInfo(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 FileTransferInfo 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return FileTransferInfo 을 반환한다.
//	 */
//	public static FileTransferInfo getFileTransferInfo(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_FILE_TRANSFER_INFO };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		FileTransferInfo fileTransferInfo = null;
//		if (messageCursor.moveToFirst()) {
//			try {
//				byte[] data = messageCursor
//						.getBlob(messageCursor
//								.getColumnIndexOrThrow(MessageTable.KEY_FILE_TRANSFER_INFO));
//				if (data != null) {
//					fileTransferInfo = FileTransferInfo.parseFrom(data);
//				}
//			} catch (InvalidProtocolBufferMicroException e) {
//				MTalkLogWriter.e(e);
//			} catch (IllegalArgumentException e) {
//				MTalkLogWriter.e(e);
//			}
//		}
//		messageCursor.close();
//		return fileTransferInfo;
//	}
//
//	/**
//	 * messageUuid로 ThumbnailTransferInfo 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ThumbnailTransferInfo 을 반환한다.
//	 */
//	public static FileTransferInfo getThumbnailTransferInfo(Context context,
//			UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_THUMBNAIL };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		FileTransferInfo thumbnailTransferInfo = null;
//		if (messageCursor.moveToFirst()) {
//			try {
//				byte[] data = messageCursor.getBlob(messageCursor
//						.getColumnIndexOrThrow(MessageTable.KEY_THUMBNAIL));
//				if (data != null) {
//					thumbnailTransferInfo = FileTransferInfo.parseFrom(data);
//				}
//			} catch (InvalidProtocolBufferMicroException e) {
//				MTalkLogWriter.e(e);
//			} catch (IllegalArgumentException e) {
//				MTalkLogWriter.e(e);
//			}
//		}
//		messageCursor.close();
//		return thumbnailTransferInfo;
//	}
//
//	/**
//	 * messageUuid로 ThumbnailTransferInfo 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ThumbnailTransferInfo 을 반환한다.
//	 */
//	public static FileTransferInfo getThumbnailTransferInfo(Context context,
//			UUID clientMessageUuid) {
//		return getThumbnailTransferInfo(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 ThumbnailTransferInfo 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ThumbnailTransferInfo 을 반환한다.
//	 */
//	public static FileTransferInfo getThumbnailTransferInfo(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_THUMBNAIL };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		FileTransferInfo thumbnailTransferInfo = null;
//		if (messageCursor.moveToFirst()) {
//			try {
//				byte[] data = messageCursor.getBlob(messageCursor
//						.getColumnIndexOrThrow(MessageTable.KEY_THUMBNAIL));
//				if (data != null) {
//					thumbnailTransferInfo = FileTransferInfo.parseFrom(data);
//				}
//			} catch (InvalidProtocolBufferMicroException e) {
//				MTalkLogWriter.e(e);
//			} catch (IllegalArgumentException e) {
//				MTalkLogWriter.e(e);
//			}
//		}
//		messageCursor.close();
//		return thumbnailTransferInfo;
//	}
//
//	/**
//	 * messageUuid로 ClientMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ClientMessage 을 반환한다.
//	 */
//	public static String getClientMessage(Context context, UUIDMsg messageUuid) {
//		String[] projection = new String[] { MessageTable.KEY_CLIENT_MESSAGE };
//		String select = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(messageUuid)),
//				String.valueOf(GpbSupport.lsbOf(messageUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		String clientMessage = null;
//		if (messageCursor.moveToFirst()) {
//			clientMessage = messageCursor.getString(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_CLIENT_MESSAGE));
//		}
//		messageCursor.close();
//		return clientMessage;
//	}
//
//	/**
//	 * messageUuid로 ClientMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ClientMessage 을 반환한다.
//	 */
//	public static String getClientMessage(Context context,
//			UUID clientMessageUuid) {
//		return getClientMessage(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * messageUuid로 ClientMessage 을 찾는다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return ClientMessage 을 반환한다.
//	 */
//	public static String getClientMessage(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_CLIENT_MESSAGE };
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, null);
//
//		String clientMessage = null;
//		if (messageCursor.moveToFirst()) {
//			clientMessage = messageCursor.getString(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_CLIENT_MESSAGE));
//		}
//		messageCursor.close();
//		return clientMessage;
//	}
//
//	public static String getLastMessage(Context context,
//			long clientViewUuidMsb, long clientViewUuidLsb) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE,
//				MessageTable.KEY_MY_MESSAGE };
//		String selection = MessageTable.KEY_CLIENT_VIEW_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_VIEW_UUID_LSB + "=?"
//				+ " AND " + MessageTable.KEY_MESSAGE_OBJECT_TYPE + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientViewUuidMsb),
//				String.valueOf(clientViewUuidLsb),
//				String.valueOf(MessageTable.MessageObjectType.USER.getCode()) };
//		String sortOrder = MessageTable.KEY_MESSAGE_TIME
//				+ " COLLATE LOCALIZED DESC";
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				selection, selectionArgs, sortOrder);
//		String lastMessage = null;
//		while (messageCursor.moveToNext()) {
//			try {
//				UserMessage um = Common.UserMessage
//						.parseFrom(messageCursor.getBlob(messageCursor
//								.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE)));
//				int isMyMessage = messageCursor.getInt(messageCursor
//						.getColumnIndexOrThrow(MessageTable.KEY_MY_MESSAGE));
//				if (um.getContentType() == Common.CONTENT_TYPE_PLAIN) {
//					if (um.hasContent()) {
//						lastMessage = um.getContent();
//					} else {
//						continue;
//					}
//				} else if (um.getContentType() == Common.CONTENT_TYPE_HTML) {
//					// 파일 전송
//					if (um.hasAttachFile() && um.getAttachFile().hasFileType()) {
//						switch (um.getAttachFile().getFileType()) {
//						case Common.FT_PROFILE_IMG:
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_img);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_img);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_img);
//							}
//							break;
//						case Common.FT_IMG:
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_img);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_img);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_img);
//							}
//							break;
//						case Common.FT_VIDEO:
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_video);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_video);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_video);
//							}
//							break;
//						case Common.FT_AUDIO:
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_voice);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_voice);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_voice);
//							}
//							break;
//						default:
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_file);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_file);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_file);
//							}
//							break;
//						}
//						break;
//					} else {
//						continue;
//					}
//				} else if (um.getContentType() == Common.CONTENT_TYPE_ATTACHMENT) {
//					// 첨부
//					if (um.hasAttachment()) {
//						if (um.getAttachment().getMimeType()
//								.equals(MTalkConstant.MIME_TYPE_VCALENDAR)) {
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_vcalendar);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_vcalendar);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_vcalendar);
//							}
//						} else if (um.getAttachment().getMimeType()
//								.equals(MTalkConstant.MIME_TYPE_VCARD)) {
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_vcard);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_vcard);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_vcard);
//							}
//						} else if (um.getAttachment().getMimeType()
//								.equals(MTalkConstant.MIME_TYPE_GEOTAG)) {
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_geotag);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_geotag);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_geotag);
//							}
//						} else if (um.getAttachment().getMimeType()
//								.equals(MTalkConstant.MIME_TYPE_GIFT)) {
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_gift);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_gift);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_gift);
//							}
//						} else {
//							if (isMyMessage == MessageTable.MyMessage.NO
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_receive_file);
//							} else if (isMyMessage == MessageTable.MyMessage.YES
//									.ordinal()) {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_send_file);
//							} else {
//								lastMessage = context
//										.getString(R.string.talk_sub_title_file);
//							}
//						}
//						break;
//					} else {
//						continue;
//					}
//				} else {
//					continue;
//				}
//			} catch (InvalidProtocolBufferMicroException e) {
//				MTalkLogWriter.e(e);
//			} catch (IllegalArgumentException e) {
//				MTalkLogWriter.e(e);
//			}
//		}
//		messageCursor.close();
//		return lastMessage;
//	}
//
//	public static List<Common.Message> getMediaMessages(Context context,
//			long clientViewUUIDMsb, long clientViewUUIDLsb) {
//		String[] projection = new String[] { MessageTable.KEY_MESSAGE_UUID_MSB,
//				MessageTable.KEY_MESSAGE_UUID_LSB, MessageTable.KEY_MESSAGE,
//				MessageTable.KEY_MESSAGE_STATUS };
//		String select = MessageTable.KEY_CLIENT_VIEW_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_CLIENT_VIEW_UUID_LSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_OBJECT_TYPE + "="
//				+ MessageTable.MessageObjectType.USER.getCode();
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientViewUUIDMsb),
//				String.valueOf(clientViewUUIDLsb) };
//		String sortOrder = MessageTable.KEY_MESSAGE_TIME + " COLLATE LOCALIZED DESC";
//		ContentResolver cr = context.getContentResolver();
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI, projection,
//				select, selectionArgs, sortOrder);
//
//		List<Common.Message> items = new ArrayList<Common.Message>();
//		while (messageCursor.moveToNext()) {
//			int status = messageCursor.getInt(messageCursor
//					.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_STATUS));
//			if (status == MessageTable.MessageStatus.SERVER_RECEIVE_FAIL
//					.ordinal()
//					|| status == MessageTable.MessageStatus.SENDING.ordinal()) {
//				continue;
//			}
//			Common.Message msg = new Message();
//			msg.setMsgUuid(GpbSupport.makeUuidMsg(
//					messageCursor
//							.getLong(messageCursor
//									.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_UUID_MSB)),
//					messageCursor.getLong(messageCursor
//							.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE_UUID_LSB))));
//			try {
//				msg.setUserMassage(Common.UserMessage.parseFrom(messageCursor.getBlob(messageCursor
//						.getColumnIndexOrThrow(MessageTable.KEY_MESSAGE))));
//			} catch (InvalidProtocolBufferMicroException e) {
//				MTalkLogWriter.e(e);
//				continue;
//			} catch (IllegalArgumentException e) {
//				MTalkLogWriter.e(e);
//				continue;
//			}
//			switch(msg.getUserMassage().getContentType()){
//				case Common.CONTENT_TYPE_ATTACHMENT:
//				case Common.CONTENT_TYPE_HTML:
//					items.add(msg);
//					break;
//				case Common.CONTENT_TYPE_PLAIN:
//				default:
//					break;
//				
//			}
//		}
//		messageCursor.close();
//
//		return items;
//	}
//
//	/**
//	 * 수정 Update
//	 */
//
//	/**
//	 * 새로운 UUID를 받아서 기존의 UUID 를 업데이트 한다.
//	 * 
//	 * @param context
//	 * @param clientViewUuid
//	 *            기존의 UUID
//	 * @param viewUuid
//	 *            업데이트할 UUID
//	 */
//	public static void updateViewUUID(Context context, UUID clientViewUuid,
//			UUIDMsg viewUuid) {
//		updateViewUUID(context, clientViewUuid.getMostSignificantBits(),
//				clientViewUuid.getLeastSignificantBits(), viewUuid);
//	}
//
//	/**
//	 * 새로운 UUID를 받아서 기존의 UUID 를 업데이트 한다.
//	 * 
//	 * @param context
//	 * @param clientViewUuidMsb
//	 *            기존의 UUID
//	 * @param clientViewUuidLsb
//	 *            기존의 UUID
//	 * @param viewUuid
//	 *            업데이트할 UUID
//	 */
//	public static void updateViewUUID(Context context, long clientViewUuidMsb,
//			long clientViewUuidLsb, UUIDMsg viewUuid) {
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_VIEW_UUID_MSB, GpbSupport.msbOf(viewUuid));
//		cv.put(MessageTable.KEY_VIEW_UUID_LSB, GpbSupport.lsbOf(viewUuid));
//
//		String where = MessageTable.KEY_CLIENT_VIEW_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_CLIENT_VIEW_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientViewUuidMsb),
//				String.valueOf(clientViewUuidLsb) };
//
//		ContentResolver cr = context.getContentResolver();
//		cr.update(MessageTable.CONTENT_URI, cv, where, selectionArgs);
//	}
//
//	/**
//	 * SendMessageRes 에 대한 내용을 업데이트한다.
//	 * 
//	 * @param context
//	 * @param clientMsgUuid
//	 * @param msgRes
//	 */
//	public static void updateSendAfter(Context context, UUID clientMsgUuid,
//			SendMessageRes msgRes) {
//		/** SendMessage에 대한 응답을 받기전에 다른 경로로 메시지가 들어왔다면 종료해버리자. **/
//		if (msgRes != null && msgRes.getResponseCode() == Common.SUCCESS) {
//			if (existCheckMessage(context, msgRes.getMsgUuid())) {
//				deleteMessageByClientMsgUUID(context, clientMsgUuid);
//				// deleteMessageByMsgUUIDMsg(context, msgRes.getMsgUuid());
//				return;
//			}
//		}
//
//		ContentValues cv = new ContentValues();
//		if (msgRes != null && msgRes.getResponseCode() == Common.SUCCESS) {
//			cv.put(MessageTable.KEY_MESSAGE_UUID_MSB,
//					GpbSupport.msbOf(msgRes.getMsgUuid()));
//			cv.put(MessageTable.KEY_MESSAGE_UUID_LSB,
//					GpbSupport.lsbOf(msgRes.getMsgUuid()));
//			cv.put(MessageTable.KEY_MESSAGE_NOTI_UUID_MSB,
//					GpbSupport.msbOf(msgRes.getNotiUuid()));
//			cv.put(MessageTable.KEY_MESSAGE_NOTI_UUID_LSB,
//					GpbSupport.lsbOf(msgRes.getNotiUuid()));
//			cv.put(MessageTable.KEY_MESSAGE_STATUS,
//					MessageTable.MessageStatus.SERVER_RECEIVE.ordinal());
//			cv.put(MessageTable.KEY_MESSAGE_TIME,
//					TimeAdapter.getMillisecondFromUUIDMsg(msgRes.getMsgUuid()));
//		} else {
//			cv.put(MessageTable.KEY_MESSAGE_STATUS,
//					MessageStatus.SERVER_RECEIVE_FAIL.ordinal());
//		}
//		ContentResolver cr = context.getContentResolver();
//
//		String selection = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMsgUuid.getMostSignificantBits()),
//				String.valueOf(clientMsgUuid.getLeastSignificantBits()) };
//
//		cr.update(MessageTable.CONTENT_URI, cv, selection, selectionArgs);
//	}
//
//	/**
//	 * ReadMarkList 의 내용을 업데이트한다.
//	 * 
//	 * @param context
//	 * @param readMarkList
//	 * @param viewUuid
//	 */
//	public static void updateMessageReadCheck(Context context,
//			List<ReadMark> readMarkList, UUIDMsg viewUuid) {
//		for (ReadMark readMark : readMarkList) {
//			long msgEndTime = TimeAdapter.getMillisecondFromUUIDMsg(readMark
//					.getMsgUuid());
//			String selection = MessageTable.KEY_MESSAGE_TIME + "<=? AND "
//					+ MessageTable.KEY_MESSAGE_OBJECT_TYPE + "=? AND "
//					+ MessageTable.KEY_VIEW_UUID_MSB + "=? AND "
//					+ MessageTable.KEY_VIEW_UUID_LSB + "=? AND "
//					+ MessageTable.KEY_MESSAGE_STATUS + "!=?";
//			String[] selectionArgs = new String[] {
//					String.valueOf(msgEndTime),
//					String.valueOf(MessageTable.MessageObjectType.USER
//							.getCode()),
//					String.valueOf(GpbSupport.msbOf(viewUuid)),
//					String.valueOf(GpbSupport.lsbOf(viewUuid)),
//					String.valueOf(MessageTable.MessageStatus.SERVER_RECEIVE_FAIL
//							.ordinal()) };
//			ContentResolver cr = context.getContentResolver();
//			ContentValues cv = new ContentValues();
//			cv.put(MessageTable.KEY_MESSAGE_STATUS,
//					MessageTable.MessageStatus.CLIENT_READ.ordinal());
//			cr.update(MessageTable.CONTENT_URI, cv, selection, selectionArgs);
//		}
//	}
//
//	/**
//	 * ReadMark 에 대한 내용을 업데이트한다.
//	 * 
//	 * @param context
//	 * @param readMark
//	 * @param clientViewUuid
//	 */
//	public static void updateMessageReadCheck(Context context,
//			ReadMark readMark, long clientViewUuidMsb, long clinetViewUuidLsb) {
//		long msgEndTime = TimeAdapter.getMillisecondFromUUIDMsg(readMark
//				.getMsgUuid());
//		String selection = MessageTable.KEY_MESSAGE_TIME + "<=? AND "
//				+ MessageTable.KEY_MESSAGE_OBJECT_TYPE + "=? AND "
//				+ MessageTable.KEY_CLIENT_VIEW_UUID_MSB + "=? AND "
//				+ MessageTable.KEY_CLIENT_VIEW_UUID_LSB + "=? AND "
//				+ MessageTable.KEY_MESSAGE_STATUS + "!=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(msgEndTime),
//				String.valueOf(MessageTable.MessageObjectType.USER.getCode()),
//				String.valueOf(clientViewUuidMsb),
//				String.valueOf(clinetViewUuidLsb),
//				String.valueOf(MessageTable.MessageStatus.SERVER_RECEIVE_FAIL
//						.ordinal()) };
//		ContentResolver cr = context.getContentResolver();
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_MESSAGE_STATUS,
//				MessageTable.MessageStatus.CLIENT_READ.ordinal());
//		cr.update(MessageTable.CONTENT_URI, cv, selection, selectionArgs);
//	}
//
//	/**
//	 * Msg의 ReadMark를 업데이트 한다.
//	 * 
//	 * @param context
//	 * @param msgUuid
//	 * @param clientViewUuid
//	 */
//	public static void updateMessageReadCheck(Context context, UUIDMsg msgUuid,
//			UUID clientViewUuid) {
//		long msgEndTime = TimeAdapter.getMillisecondFromUUIDMsg(msgUuid);
//		String selection = MessageTable.KEY_MESSAGE_TIME + "<=? AND "
//				+ MessageTable.KEY_MESSAGE_OBJECT_TYPE + "=? AND "
//				+ MessageTable.KEY_CLIENT_VIEW_UUID_MSB + "=? AND "
//				+ MessageTable.KEY_CLIENT_VIEW_UUID_LSB + "=? AND "
//				+ MessageTable.KEY_MESSAGE_STATUS + "!=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(msgEndTime),
//				String.valueOf(MessageTable.MessageObjectType.USER.getCode()),
//				String.valueOf(clientViewUuid.getMostSignificantBits()),
//				String.valueOf(clientViewUuid.getLeastSignificantBits()),
//				String.valueOf(MessageTable.MessageStatus.SERVER_RECEIVE_FAIL
//						.ordinal()) };
//		ContentResolver cr = context.getContentResolver();
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_MESSAGE_STATUS,
//				MessageTable.MessageStatus.CLIENT_READ.ordinal());
//		cr.update(MessageTable.CONTENT_URI, cv, selection, selectionArgs);
//	}
//
//	/**
//	 * Msg의 ReadMark를 업데이트 한다.
//	 * 
//	 * @param context
//	 * @param msgUuid
//	 * @param viewUuid
//	 */
//	public static void updateMessageReadCheck(Context context, UUIDMsg msgUuid,
//			UUIDMsg viewUuid) {
//		updateMessageReadCheck(context, msgUuid, GpbSupport.msbOf(viewUuid),
//				GpbSupport.lsbOf(viewUuid));
//	}
//
//	/**
//	 * Msg의 ReadMark를 업데이트 한다.
//	 * 
//	 * @param context
//	 * @param msgUuid
//	 * @param viewUuidMsb
//	 * @param viewUuidLsb
//	 */
//	public static void updateMessageReadCheck(Context context, UUIDMsg msgUuid,
//			long viewUuidMsb, long viewUuidLsb) {
//
//		long msgEndTime = TimeAdapter.getMillisecondFromUUIDMsg(msgUuid);
//		String selection = MessageTable.KEY_MESSAGE_TIME + "<=? AND "
//				+ MessageTable.KEY_MESSAGE_OBJECT_TYPE + "=? AND "
//				+ MessageTable.KEY_VIEW_UUID_MSB + "=? AND "
//				+ MessageTable.KEY_VIEW_UUID_LSB + "=? AND "
//				+ MessageTable.KEY_MESSAGE_STATUS + "!=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(msgEndTime),
//				String.valueOf(MessageTable.MessageObjectType.USER.getCode()),
//				String.valueOf(viewUuidMsb),
//				String.valueOf(viewUuidLsb),
//				String.valueOf(MessageTable.MessageStatus.CLIENT_READ.ordinal()) };
//		ContentResolver cr = context.getContentResolver();
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_MESSAGE_STATUS,
//				MessageTable.MessageStatus.CLIENT_READ.ordinal());
//		cr.update(MessageTable.CONTENT_URI, cv, selection, selectionArgs);
//	}
//
//	/**
//	 * 유저 메시지를 업데이트한다. // 파일일 경우 업데이트 로직 필요 // SendMessage 성공시에 업데이트
//	 * 
//	 * @param context
//	 * @param clientMsgUuid
//	 * @param userMessage
//	 */
//	public static void updateUserMessage(Context context, UUID clientMsgUuid,
//			UserMessage userMessage) {
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_MESSAGE, userMessage.toByteArray());
//		String select = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMsgUuid.getMostSignificantBits()),
//				String.valueOf(clientMsgUuid.getLeastSignificantBits()) };
//
//		ContentResolver cr = context.getContentResolver();
//		cr.update(MessageTable.CONTENT_URI, cv, select, selectionArgs);
//	}
//
//	/**
//	 * 파일 전송 정보를 설정한다.
//	 * 
//	 * @param context
//	 * @param msgUuid
//	 * @param info
//	 */
//	public static void setFileTransferInfo(Context context, UUIDMsg msgUuid,
//			FileTransferInfo info) {
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_FILE_TRANSFER_INFO, info.toByteArray());
//
//		String where = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(msgUuid)),
//				String.valueOf(GpbSupport.lsbOf(msgUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		cr.update(MessageTable.CONTENT_URI, cv, where, selectionArgs);
//	}
//
//	/**
//	 * 파일 전송 정보를 설정한다.
//	 * 
//	 * @param context
//	 * @param clientMsgUuid
//	 * @param info
//	 */
//	public static void setFileTransferInfo(Context context, UUID clientMsgUuid,
//			FileTransferInfo info) {
//		setFileTransferInfo(context, clientMsgUuid.getMostSignificantBits(),
//				clientMsgUuid.getLeastSignificantBits(), info);
//	}
//
//	/**
//	 * 파일 전송 정보를 설정한다.
//	 * 
//	 * @param context
//	 * @param clientMsgUuidMsb
//	 * @param clientMsgUuidLsb
//	 * @param info
//	 */
//	public static void setFileTransferInfo(Context context,
//			long clientMsgUuidMsb, long clientMsgUuidLsb, FileTransferInfo info) {
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_FILE_TRANSFER_INFO, info.toByteArray());
//
//		String where = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMsgUuidMsb),
//				String.valueOf(clientMsgUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		cr.update(MessageTable.CONTENT_URI, cv, where, selectionArgs);
//	}
//
//	/**
//	 * Thumbnail 전송 정보를 설정한다.
//	 * 
//	 * @param context
//	 * @param msgUuid
//	 * @param info
//	 */
//	public static void setThumbnailTransferInfo(Context context,
//			UUIDMsg msgUuid, FileTransferInfo info) {
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_THUMBNAIL, info.toByteArray());
//
//		String where = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(msgUuid)),
//				String.valueOf(GpbSupport.lsbOf(msgUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		cr.update(MessageTable.CONTENT_URI, cv, where, selectionArgs);
//	}
//
//	/**
//	 * Thumbnail 전송 정보를 설정한다.
//	 * 
//	 * @param context
//	 * @param clientMsgUuid
//	 * @param info
//	 */
//	public static void setThumbnailTransferInfo(Context context,
//			UUID clientMsgUuid, FileTransferInfo info) {
//		setThumbnailTransferInfo(context,
//				clientMsgUuid.getMostSignificantBits(),
//				clientMsgUuid.getLeastSignificantBits(), info);
//	}
//
//	/**
//	 * Thumbnail 전송 정보를 설정한다.
//	 * 
//	 * @param context
//	 * @param clientMsgUuidMsb
//	 * @param clientMsgUuidLsb
//	 * @param info
//	 */
//	public static void setThumbnailTransferInfo(Context context,
//			long clientMsgUuidMsb, long clientMsgUuidLsb, FileTransferInfo info) {
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_THUMBNAIL, info.toByteArray());
//
//		String where = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMsgUuidMsb),
//				String.valueOf(clientMsgUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		cr.update(MessageTable.CONTENT_URI, cv, where, selectionArgs);
//	}
//
//	/**
//	 * MessageStatus 를 설정한다.
//	 * 
//	 * @param context
//	 * @param msgUuid
//	 * @param info
//	 */
//	public static void setMessageStatus(Context context, UUIDMsg msgUuid,
//			int status) {
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_MESSAGE_STATUS, status);
//
//		String where = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(msgUuid)),
//				String.valueOf(GpbSupport.lsbOf(msgUuid)) };
//		ContentResolver cr = context.getContentResolver();
//		cr.update(MessageTable.CONTENT_URI, cv, where, selectionArgs);
//	}
//
//	/**
//	 * MessageStatus 를 설정한다.
//	 * 
//	 * @param context
//	 * @param clientMsgUuid
//	 * @param info
//	 */
//	public static void setMessageStatus(Context context, UUID clientMsgUuid,
//			int status) {
//		setMessageStatus(context, clientMsgUuid.getMostSignificantBits(),
//				clientMsgUuid.getLeastSignificantBits(), status);
//	}
//
//	/**
//	 * MessageStatus 를 설정한다.
//	 * 
//	 * @param context
//	 * @param clientMsgUuidMsb
//	 * @param clientMsgUuidLsb
//	 * @param info
//	 */
//	public static void setMessageStatus(Context context, long clientMsgUuidMsb,
//			long clientMsgUuidLsb, int status) {
//		ContentValues cv = new ContentValues();
//		cv.put(MessageTable.KEY_MESSAGE_STATUS, status);
//
//		String where = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMsgUuidMsb),
//				String.valueOf(clientMsgUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		cr.update(MessageTable.CONTENT_URI, cv, where, selectionArgs);
//	}
//
//	/**
//	 * 기존의 메시지가 변경될수 있는가? 그렇다면 여기서 업데이트를 해줘야 한다.!
//	 * 
//	 * @param context
//	 * @param message
//	 */
//	public static void updateMessage(Context context, Common.Message message) {
//		// 아직은 할일이 없어 보인다. 2011-05-08
//	}
//
//	/**
//	 * 삭제 Delete
//	 */
//
//	/**
//	 * ClientMsgUUID 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param clientMessageUuid
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByClientMsgUUID(Context context,
//			UUID clientMessageUuid) {
//		return deleteMessageByClientMsgUUID(context,
//				clientMessageUuid.getMostSignificantBits(),
//				clientMessageUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * ClientMsgUUID 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param clientMessageUuidMsb
//	 * @param clientMessageUuidLsb
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByClientMsgUUID(Context context,
//			long clientMessageUuidMsb, long clientMessageUuidLsb) {
//		String where = MessageTable.KEY_CLIENT_MESSAGE_UUID_MSB + "=?"
//				+ " AND " + MessageTable.KEY_CLIENT_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientMessageUuidMsb),
//				String.valueOf(clientMessageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		return cr.delete(MessageTable.CONTENT_URI, where, selectionArgs);
//	}
//
//	/**
//	 * MsgUUID 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param messageUuid
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByMsgUUIDMsg(Context context,
//			UUIDMsg messageUuid) {
//		return deleteMessageByMsgUUIDMsg(context,
//				GpbSupport.msbOf(messageUuid), GpbSupport.lsbOf(messageUuid));
//	}
//
//	/**
//	 * MsgUUID 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param messageUuidMsb
//	 * @param messageUuidLsb
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByMsgUUIDMsg(Context context,
//			long messageUuidMsb, long messageUuidLsb) {
//		String where = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] { String.valueOf(messageUuidMsb),
//				String.valueOf(messageUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		return cr.delete(MessageTable.CONTENT_URI, where, selectionArgs);
//	}
//
//	/**
//	 * MsgNotiUUID 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param messageNotiUuid
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByNotiUUIDMsg(Context context,
//			UUIDMsg messageNotiUuid) {
//		return deleteMessageByNotiUUIDMsg(context,
//				GpbSupport.msbOf(messageNotiUuid),
//				GpbSupport.lsbOf(messageNotiUuid));
//	}
//
//	/**
//	 * MsgNotiUUID 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param messageNotiUuidMsb
//	 * @param messageNotiUuidLsb
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByNotiUUIDMsg(Context context,
//			long messageNotiUuidMsb, long messageNotiUuidLsb) {
//		String where = MessageTable.KEY_MESSAGE_NOTI_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_NOTI_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(messageNotiUuidMsb),
//				String.valueOf(messageNotiUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		return cr.delete(MessageTable.CONTENT_URI, where, selectionArgs);
//	}
//
//	/**
//	 * MsgNotiUUID List 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param messageNotiUuid
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByNotiUUIDMsgList(Context context,
//			List<UUIDMsg> messageNotiUuidList) {
//		String where = null;
//		String[] selectionArgs = null;
//		for (UUIDMsg notiUuid : messageNotiUuidList) {
//			if (where == null) {
//				where = "(" + MessageTable.KEY_MESSAGE_NOTI_UUID_MSB + "="
//						+ String.valueOf(GpbSupport.msbOf(notiUuid)) + " AND "
//						+ MessageTable.KEY_MESSAGE_NOTI_UUID_LSB + "="
//						+ String.valueOf(GpbSupport.lsbOf(notiUuid)) + ")";
//			} else {
//				where = where + " OR ("
//						+ MessageTable.KEY_MESSAGE_NOTI_UUID_MSB + "="
//						+ String.valueOf(GpbSupport.msbOf(notiUuid)) + " AND "
//						+ MessageTable.KEY_MESSAGE_NOTI_UUID_LSB + "="
//						+ String.valueOf(GpbSupport.lsbOf(notiUuid)) + ")";
//			}
//		}
//		ContentResolver cr = context.getContentResolver();
//		return cr.delete(MessageTable.CONTENT_URI, where, selectionArgs);
//	}
//
//	/**
//	 * ViewUUIDMsg 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param viewUuid
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByViewUUIDMsg(Context context,
//			UUIDMsg viewUuid) {
//		return deleteMessageByViewUUIDMsg(context, GpbSupport.msbOf(viewUuid),
//				GpbSupport.lsbOf(viewUuid));
//	}
//
//	/**
//	 * ViewUUIDMsg 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param viewUuidMsb
//	 * @param viewUuidLsb
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByViewUUIDMsg(Context context,
//			long viewUuidMsb, long viewUuidLsb) {
//		String where = MessageTable.KEY_VIEW_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_VIEW_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] { String.valueOf(viewUuidMsb),
//				String.valueOf(viewUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		return cr.delete(MessageTable.CONTENT_URI, where, selectionArgs);
//	}
//
//	/**
//	 * ClientViewUUID 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param clientViewUuid
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByClientViewUUID(Context context,
//			UUID clientViewUuid) {
//		return deleteMessageByClientViewUUID(context,
//				clientViewUuid.getMostSignificantBits(),
//				clientViewUuid.getLeastSignificantBits());
//	}
//
//	/**
//	 * ClientViewUUID 에 대한 메시지를 삭제한다.
//	 * 
//	 * @param context
//	 * @param clientViewUuidMsb
//	 * @param clientViewUuidLsb
//	 * @return 삭제된 row를 반환한다.
//	 */
//	public static int deleteMessageByClientViewUUID(Context context,
//			long clientViewUuidMsb, long clientViewUuidLsb) {
//		String where = MessageTable.KEY_CLIENT_VIEW_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_CLIENT_VIEW_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(clientViewUuidMsb),
//				String.valueOf(clientViewUuidLsb) };
//		ContentResolver cr = context.getContentResolver();
//		return cr.delete(MessageTable.CONTENT_URI, where, selectionArgs);
//	}
//
//	/**
//	 * 모든 메시지 삭제
//	 * 
//	 * @param context
//	 */
//	public static void deleteAllMessage(Context context) {
//		ContentResolver cr = context.getContentResolver();
//		cr.delete(MessageTable.CONTENT_URI, null, null);
//	}
//
//	/**
//	 * 확인 Check 서버에서 내려온 데이터를 싱크하기 위한 Select 쿼리 빈번한 업데이트를 줄이기 위해 우선 확인을 한다. -
//	 * 메시지가 존재하는지 확인 - Thumbnail 이 존재하는지 확인 - 메시지 리스트를 비교한다.
//	 */
//
//	/**
//	 * 메시지가 존재하는지 확인한다.
//	 * 
//	 * @param context
//	 * @param msgUuid
//	 * @return 존재하면 True 반환
//	 */
//	public static boolean existCheckMessage(Context context, UUIDMsg msgUuid) {
//		ContentResolver cr = context.getContentResolver();
//		String[] projection = new String[] { MessageTable._ID };
//		String selection = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(msgUuid)),
//				String.valueOf(GpbSupport.lsbOf(msgUuid)) };
//		Cursor cursor = cr.query(MessageTable.CONTENT_URI, projection,
//				selection, selectionArgs, null);
//		boolean exist = false;
//		if (cursor.moveToFirst()) {
//			exist = true;
//		}
//		cursor.close();
//		return exist;
//	}
//
//	/**
//	 * ThumbNail 이 존재하는지 확인한다.
//	 * 
//	 * @param context
//	 * @param msgUuid
//	 * @return 존재하면 True 반환
//	 */
//	public static boolean existThumbnail(Context context, UUIDMsg msgUuid) {
//		ContentResolver cr = context.getContentResolver();
//		String[] projection = new String[] { MessageTable.KEY_THUMBNAIL };
//		String selection = MessageTable.KEY_MESSAGE_UUID_MSB + "=?" + " AND "
//				+ MessageTable.KEY_MESSAGE_UUID_LSB + "=?";
//		String[] selectionArgs = new String[] {
//				String.valueOf(GpbSupport.msbOf(msgUuid)),
//				String.valueOf(GpbSupport.lsbOf(msgUuid)) };
//		Cursor cursor = cr.query(MessageTable.CONTENT_URI, projection,
//				selection, selectionArgs, null);
//		boolean exist = false;
//		if (cursor.moveToFirst()) {
//			exist = (cursor.getBlob(cursor
//					.getColumnIndexOrThrow(MessageTable.KEY_THUMBNAIL)) != null);
//		}
//		cursor.close();
//		return exist;
//	}
//
//	/**
//	 * 메시지 리스트를 비교한다.
//	 * 
//	 * @param context
//	 * @param messageList
//	 * @return 받은 메시지가 모두 존재한다면 true 반환
//	 */
//	public static boolean checkMessage(Context context, UUIDMsg viewUuid,
//			List<Common.Message> messageList) {
//		ContentResolver cr = context.getContentResolver();
//		String where = "";
//		for (int i = 0; i < messageList.size(); i++) {
//			if (i == 0) {
//				where = "(" + MessageTable.KEY_MESSAGE_UUID_MSB + "="
//						+ GpbSupport.msbOf(messageList.get(i).getMsgUuid())
//						+ " AND " + MessageTable.KEY_MESSAGE_UUID_LSB + "="
//						+ GpbSupport.lsbOf(messageList.get(i).getMsgUuid())
//						+ ")";
//			} else {
//				where = where + " OR " + "("
//						+ MessageTable.KEY_MESSAGE_UUID_MSB + "="
//						+ GpbSupport.msbOf(messageList.get(i).getMsgUuid())
//						+ " AND " + MessageTable.KEY_MESSAGE_UUID_LSB + "="
//						+ GpbSupport.lsbOf(messageList.get(i).getMsgUuid())
//						+ ")";
//			}
//		}
//		boolean checkMessage = false;
//
//		Cursor messageCursor = cr.query(MessageTable.CONTENT_URI,
//				new String[] { MessageTable._ID }, where, null, null);
//		try {
//			if (messageCursor.getCount() == ChatActivity.GET_MESSAGE_MAX_COUNT) {
//				checkMessage = true;
//			}
//		} finally {
//			messageCursor.close();
//		}
//
//		return checkMessage;
//	}
//}
